#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import argparse

from pathlib import Path
# 添加项目根目录到Python路径
sys.path.insert(0, str(Path(__file__).parent.parent))

if __name__ == '__main__':
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='SmarTest Web Server')
    parser.add_argument('--work-path', type=str, default='~/smartest', help='工作目录路径')
    parser.add_argument('--config-file', type=str, default='config.json', help='配置文件路径')
    parser.add_argument("--enable-mock", action="store_true", help="使用mock模式运行")
    parser.add_argument('--daemon', action='store_true', help='以守护进程模式运行')
    parser.add_argument('--pid-file', type=str, default='http-server.pid', help='守护进程模式下的PID文件路径')
    args = parser.parse_args()
    
    # 处理工作目录路径
    if not os.path.isabs(args.work_path):
        args.work_path = os.path.expanduser(args.work_path)
    
    # 确保工作目录存在
    os.makedirs(args.work_path, exist_ok=True)
    
    # 切换到工作目录
    os.chdir(args.work_path)

    # 如果是守护进程模式，先进行守护进程化
    if args.daemon:
        from common.utils import daemonize
        daemonize(os.path.join(args.work_path, args.pid_file))

    # 加载配置
    from common.config import load_configs
    if not load_configs(args.work_path, args.config_file):
        exit(1)

    # 初始化服务
    if args.enable_mock:
        from web_server.mock.service_mgr import ServiceMgr
    else:
        from web_server.service_mgr import ServiceMgr
    service_mgr = ServiceMgr()
    service_mgr.start()
    service_mgr.wait()
    service_mgr.destroy()